﻿using mozhi.smarterp.Finance.Enums;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using Volo.Abp.Domain.Repositories;

namespace mozhi.smarterp.Finance.Treasuries.Repositories
{
    public interface IPaymentRequisitionRepository : IRepository<PaymentRequisition, Guid>
    {
        Task<long> GetCountAsync(string keyword, PaymentRequisitionType? type, bool? isAdvance, DateTime? startDate, DateTime? endDate, Guid? currencyId, Guid? excludeId,
            Guid? sourceDocumentId, Guid? sourceDocumentEntryId, CancellationToken cancellationToken = default(CancellationToken));

        Task<List<PaymentRequisition>> GetListAsync(string keyword, PaymentRequisitionType? type, bool? isAdvance, DateTime? startDate, DateTime? endDate, Guid? currencyId, Guid? sourceDocumentId, Guid? sourceDocumentEntryId,
            bool incldueDetials = false, CancellationToken cancellationToken = default(CancellationToken));

        Task<List<PaymentRequisition>> GetPagedListAsync(string keyword, PaymentRequisitionType? type, bool? isAdvance, DateTime? startDate, DateTime? endDate, Guid? currencyId, Guid? sourceDocumentId, Guid? sourceDocumentEntryId, 
            int maxResultCount, int sikpCount, string sorting, bool incldueDetials = false, CancellationToken cancellationToken = default(CancellationToken));

        Task<string> GetLatestNumberAsync();
    }
}
